home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume25 / ted / part04 < prev    next >
Encoding:
Text File  |  1991-11-06  |  53.1 KB  |  1,406 lines

  1. Newsgroups: comp.sources.misc
  2. From: dan%step.uucp@uunet.uu.net (Daniel Weaver)
  3. Subject:  v25i029:  ted - Terminfo/termcap test program, Part04/07
  4. Message-ID: <1991Nov6.042952.5991@sparky.imd.sterling.com>
  5. X-Md4-Signature: a745646eb8b1c916d2f461a4b855d562
  6. Date: Wed, 6 Nov 1991 04:29:52 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dan%step.uucp@uunet.uu.net (Daniel Weaver)
  10. Posting-number: Volume 25, Issue 29
  11. Archive-name: ted/part04
  12. Environment: UNIX
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  19. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  20. # If this archive is complete, you will see the following message at the end:
  21. #        "End of archive 4 (of 7)."
  22. # Contents:  crum.c getcaps.c ted.h
  23. # Wrapped by dan@step on Fri Nov  1 11:28:26 1991
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. if test -f 'crum.c' -a "${1}" != "-c" ; then 
  26.   echo shar: Will not clobber existing file \"'crum.c'\"
  27. else
  28. echo shar: Extracting \"'crum.c'\" \(9550 characters\)
  29. sed "s/^X//" >'crum.c' <<'END_OF_FILE'
  30. X/*
  31. X** This software is Copyright (c) 1991 by Daniel Weaver.
  32. X**
  33. X** Permission is hereby granted to copy, distribute or otherwise
  34. X** use any part of this package as long as you do not try to make
  35. X** money from it or pretend that you wrote it.  This copyright
  36. X** notice must be maintained in any copy made.
  37. X**
  38. X** Use of this software constitutes acceptance for use in an AS IS
  39. X** condition. There are NO warranties with regard to this software.
  40. X** In no event shall the author be liable for any damages whatsoever
  41. X** arising out of or in connection with the use or performance of this
  42. X** software.  Any use of this software is at the user's own risk.
  43. X**
  44. X**  If you make modifications to this software that you feel
  45. X**  increases it usefulness for the rest of the community, please
  46. X**  email the changes, enhancements, bug fixes as well as any and
  47. X**  all ideas to me. This software is going to be maintained and
  48. X**  enhanced as deemed necessary by the community.
  49. X*/
  50. X/* test the cursor movement */
  51. X
  52. X#include "curses.h"
  53. X#include "ted.h"
  54. X
  55. Xvoid
  56. Xmove_to(rf, cf, rt, ct, sel)
  57. Xint rf, cf, rt, ct, sel;
  58. X   {  /* move the cursor from (rf, cf) to (rt, ct) using sel */
  59. X      char *s;
  60. X
  61. X      if (sel & 8)
  62. X         {  /* use (cup) */
  63. X            s = tcup(cursor_address, rt, ct);
  64. X            tputs(s, lines, putch);
  65. X            return;
  66. X         }
  67. X      if (sel & 4)
  68. X         {  /* use (hpa) (vpa) */
  69. X            if (column_address)
  70. X               {
  71. X                  s = tparm(column_address, ct);
  72. X                  tputs(s, 1, putch);
  73. X                  cf = ct;
  74. X               }
  75. X            if (row_address)
  76. X               {
  77. X                  s = tparm(row_address, rt);
  78. X                  tputs(s, 1, putch);
  79. X                  rf = rt;
  80. X               }
  81. X         }
  82. X      if (sel & 2)
  83. X         {  /* paramiterized relative cursor movement */
  84. X            if (parm_right_cursor)
  85. X               if (cf < ct)
  86. X                  {
  87. X                     s = tparm(parm_right_cursor, ct - cf);
  88. X                     tputs(s, ct - cf, putch);
  89. X                     cf = ct;
  90. X                  }
  91. X            if (parm_left_cursor)
  92. X               if (cf > ct)
  93. X                  {
  94. X                     s = tparm(parm_left_cursor, cf - ct);
  95. X                     tputs(s, cf - ct, putch);
  96. X                     cf = ct;
  97. X                  }
  98. X            if (parm_down_cursor)
  99. X               if (rf < rt)
  100. X                  {
  101. X                     s = tparm(parm_down_cursor, rt - rf);
  102. X                     tputs(s, rt - rf, putch);
  103. X                     rf = rt;
  104. X                  }
  105. X            if (parm_up_cursor)
  106. X               if (rf > rt)
  107. X                  {
  108. X                     s = tparm(parm_up_cursor, rf - rt);
  109. X                     tputs(s, rf - rt, putch);
  110. X                     rf = rt;
  111. X                  }
  112. X         }
  113. X      if (sel & 1)
  114. X         {
  115. X            if (cursor_left)
  116. X               while (cf > ct) {
  117. X                  putp(cursor_left);  cf--;
  118. X               }
  119. X            /* do vertical motion next.  Just incase cursor_down
  120. X               has a side effect of changing the column.  This could
  121. X               happen if the tty handler translates NL to CRNL.  */
  122. X            if (cursor_down)
  123. X               while (rf < rt) {
  124. X                  putp(cursor_down);  rf++;
  125. X               }
  126. X            if (cursor_up)
  127. X               while (rf > rt) {
  128. X                  putp(cursor_up);  rf--;
  129. X               }
  130. X            if (cursor_right)
  131. X               while (cf < ct) {
  132. X                  putp(cursor_right);  cf++;
  133. X               }
  134. X         }
  135. X      /* last chance */
  136. X      if (rf > rt)
  137. X         if (can_go_home)
  138. X            {  /* a bit drastic but ... */
  139. X               go_home();  cf = 0;  rf = 0;
  140. X            }
  141. X         else
  142. X         if (cursor_up)
  143. X            while (rf > rt) {
  144. X               putp(cursor_up);  rf--;
  145. X            }
  146. X      if (ct == 0 && rt > rf)
  147. X         {
  148. X            put_crlf();  cf = 0;  rf++;
  149. X         }
  150. X      if (ct == 0 && cf != 0)
  151. X         {
  152. X            put_cr();  cf = 0;
  153. X         }
  154. X         while (rf < rt) {
  155. X            put_lf();  rf++;
  156. X         }
  157. X         while (cf > ct) {
  158. X            put_str("\b");  cf--;
  159. X         }
  160. X      if (cursor_right)
  161. X         while (cf < ct) {
  162. X            putp(cursor_right);  cf++;
  163. X         }
  164. X      else  /* go ahead and trash my display */
  165. X         while (cf < ct) {
  166. X            putchp(' ');  cf++;
  167. X         }
  168. X   }
  169. X
  170. X
  171. Xstatic void
  172. Xdisplay_it(sel, txt)
  173. Xint sel;
  174. Xchar *txt;
  175. X   {  /* print the display using sel */
  176. X      int i, done_line;
  177. X
  178. X      put_clear();
  179. X      go_home();
  180. X      put_newlines(2);
  181. X      ptextln("    The top line should be alternating <'s and >'s");
  182. X      ptextln("    The left side should be alternating A's and V's");
  183. X      ptext(  "    Testing ");
  184. X      ptext(txt);  put_cr();
  185. X
  186. X      /* horizontal */
  187. X      move_to(done_line = line_count, 0, 0, 2, sel);
  188. X         for (i = 4; i < columns - 2; i += 2) {
  189. X            putchp('>');
  190. X            move_to(0, i - 1, 0, i, sel);
  191. X         }
  192. X      putchp('>');  i -= 2;
  193. X      move_to(0, i + 1, 0, i - 1, sel);
  194. X         for ( ; i > 2; i -= 2) {
  195. X            putchp('<');
  196. X            move_to(0, i, 0, i - 3, sel);
  197. X         }
  198. X      putchp('<');
  199. X
  200. X      /* vertical */
  201. X      move_to(0, 2, 0, 0, sel);
  202. X         for (i = 2; i < lines - 1; i += 2) {
  203. X            putchp('V');
  204. X            move_to(i - 2, 1, i, 0, sel);
  205. X         }
  206. X      putchp('V');  i -= 2;
  207. X      move_to(i, 1, i + 1, 0, sel);
  208. X         for (; i > 0; i -= 2) {
  209. X            putchp('A');
  210. X            move_to(i + 1, 1, i - 1, 0, sel);
  211. X         }
  212. X      putchp('A');
  213. X      move_to(i + 1, 1, 0, 0, sel);  /* go home first */
  214. X      move_to(0, 0, done_line + 1, 4, sel);
  215. X      put_str("Done.");
  216. X   }
  217. X
  218. X
  219. Xtest_move()
  220. X   {  /* test cursor movement */
  221. X      int i;
  222. X      char buf[256];
  223. X
  224. X      if (!stop_testing)
  225. X         {
  226. X            put_clear();
  227. X            if (enter_ca_mode) putp(enter_ca_mode);
  228. X         }
  229. X
  230. X      if (run_test(clear_screen,
  231. X         "This terminal has no clear screen (clear)", TRUE))
  232. X         do {
  233. X               for (i = lines; i > 1; i--) putln("garbage");
  234. X            put_clear();
  235. X            ptextln("This line starts in the home position.");
  236. X            ptext("The rest of the screen should be clear.  (clear)");
  237. X         } while (repeat_test(FALSE));
  238. X
  239. X      if (run_test(cursor_home,
  240. X         "This terminal has no home cursor (home)", TRUE))
  241. X         do {
  242. X            put_clear();
  243. X            put_newlines(lines / 2);
  244. X            go_home();
  245. X            move_to(0, 0, 1, 0, 0);
  246. X            ptext("This starts on the second line.");
  247. X            go_home();
  248. X            move_to(0, 0, lines - 1, 0, 0);
  249. X            ptext("This line is on the bottom.");
  250. X            go_home();
  251. X            ptext("This line starts in the home position.  Done (home)");
  252. X         } while (repeat_test(FALSE));
  253. X
  254. X      /* (ll) may be simulated with (cup).
  255. X         If the terminal has windows then (ll) should not
  256. X         be defined, because the position of the last line
  257. X         could change! */
  258. X      can_test("ll");
  259. X      if (run_test(cursor_to_ll, cursor_address ? NULL :
  260. X         "This terminal has no move-to-last-line (ll)", TRUE))
  261. X         do {
  262. X            put_clear();
  263. X            put_str("This line could be anywhere.");
  264. X            putp(cursor_to_ll);
  265. X            ptext("This line is on the bottom. Done.  (ll)");
  266. X         } while (repeat_test(FALSE));
  267. X
  268. X      sprintf(buf, " (cr) (nel) backspace%s",
  269. X         cursor_home ? " (home)" : (cursor_up ? " (cuu1)" : ""));
  270. X      if (run_test(buf, buf, FALSE))
  271. X         do {
  272. X            display_it(0, buf);
  273. X         } while (repeat_test(TRUE));
  274. X
  275. X      sprintf(buf, "%s%s%s%s", cursor_left ? " (cub1)" : "",
  276. X         cursor_down ? " (cud1)" : "", cursor_right ? " (cuf1)" : "",
  277. X         cursor_up ? " (cuu1)" : "");
  278. X      if (run_test((char *)buf[0],
  279. X         "    (cub1) (cud1) (cuf1) (cuu1) not defined.", TRUE))
  280. X         do {
  281. X            display_it(1, buf);
  282. X         } while (repeat_test(TRUE));
  283. X
  284. X      sprintf(buf, "%s%s%s%s", parm_left_cursor ? " (cub)" : "",
  285. X         parm_down_cursor ? " (cud)" : "",
  286. X         parm_right_cursor ? " (cuf)" : "",
  287. X         parm_up_cursor ? " (cuu)" : "");
  288. X      if (run_test((char *)buf[0],
  289. X         "    (cub) (cud) (cuf) (cuu) not defined.", TRUE))
  290. X         do {
  291. X            display_it(2, buf);
  292. X         } while (repeat_test(TRUE));
  293. X
  294. X      sprintf(buf, "%s%s", row_address ? " (vpa)" : "",
  295. X         column_address ? " (hpa)" : "");
  296. X      if (run_test((char *)buf[0],
  297. X         "    (vpa) (hpa) not defined.", TRUE))
  298. X         do {
  299. X            display_it(4, buf);
  300. X         } while (repeat_test(TRUE));
  301. X
  302. X      if (run_test(cursor_address, "    (cup) not defined.", TRUE))
  303. X         do {
  304. X            display_it(8, " (cup)");
  305. X         } while (repeat_test(TRUE));
  306. X
  307. X#ifdef SVR3
  308. X      if (cursor_address && over_strike && run_test(buf, NULL, FALSE))
  309. X         do {
  310. X            put_clear();
  311. X               for (i = 0; i < columns - 2; i++) {
  312. X                  putch('|');
  313. X               }
  314. X               for (i = 1; i < lines - 2; i++) {
  315. X                  put_crlf();
  316. X                  putch('_');
  317. X               }
  318. X               for (i = 0; i < columns - 2; i++) {
  319. X                  tputs(tcup(cursor_address, 0, i), lines, putch);
  320. X                  putch('+');
  321. X               }
  322. X               for (i = 0; i < lines - 2; i++) {
  323. X                  tputs(tcup(cursor_address, i, 0), lines, putch);
  324. X                  putch(']');
  325. X                  putch('_');
  326. X               }
  327. X            go_home();
  328. X            ptext("\n\n\n    All the characters should look the same.  Done (cup) (os)");
  329. X         } while (repeat_test(TRUE));
  330. X#endif
  331. X   }
  332. END_OF_FILE
  333. if test 9550 -ne `wc -c <'crum.c'`; then
  334.     echo shar: \"'crum.c'\" unpacked with wrong size!
  335. fi
  336. # end of 'crum.c'
  337. fi
  338. if test -f 'getcaps.c' -a "${1}" != "-c" ; then 
  339.   echo shar: Will not clobber existing file \"'getcaps.c'\"
  340. else
  341. echo shar: Extracting \"'getcaps.c'\" \(35222 characters\)
  342. sed "s/^X//" >'getcaps.c' <<'END_OF_FILE'
  343. X/*
  344. X** This software is Copyright (c) 1991 by Daniel Weaver.
  345. X**
  346. X** Permission is hereby granted to copy, distribute or otherwise
  347. X** use any part of this package as long as you do not try to make
  348. X** money from it or pretend that you wrote it.  This copyright
  349. X** notice must be maintained in any copy made.
  350. X**
  351. X** Use of this software constitutes acceptance for use in an AS IS
  352. X** condition. There are NO warranties with regard to this software.
  353. X** In no event shall the author be liable for any damages whatsoever
  354. X** arising out of or in connection with the use or performance of this
  355. X** software.  Any use of this software is at the user's own risk.
  356. X**
  357. X**  If you make modifications to this software that you feel
  358. X**  increases it usefulness for the rest of the community, please
  359. X**  email the changes, enhancements, bug fixes as well as any and
  360. X**  all ideas to me. This software is going to be maintained and
  361. X**  enhanced as deemed necessary by the community.
  362. X*/
  363. X/* termcap to terminfo conversion */
  364. X#ifdef TESTCAP
  365. X#include "bsd.h"
  366. X#ifdef LIBTC
  367. X#define tgetent tcgetent
  368. X#define tgetnum tcgetnum
  369. X#define tgetflag tcgetflag
  370. X#define tgetstr tcgetstr
  371. Xchar ttytype[256];
  372. Xstatic char *s, *t;
  373. Xextern char *gtname();
  374. Xstatic int l;
  375. X#endif
  376. Xextern char *tgetstr();
  377. Xchar cap_entry[4096];
  378. Xstatic char buf[4096];
  379. Xstatic char *bb = buf;
  380. Xchar *captrans[] = {
  381. X    "bw:bw", "am:am", "xsb:xb", "xhp:xs", "xenl:xn", "eo:eo",
  382. X    "gn:gn", "hc:hc", "km:km", "hs:hs", "in:in", "da:da", "db:db",
  383. X    "mir:mi", "msgr:ms", "os:os", "eslok:es", "xt:xt", "hz:hz",
  384. X    "ul:ul", "xon:xo", "nxon:nx", "mc5i:5i", "chts:HC",
  385. X    "nrrmc:NR", "npc:NP", "ndscr:ND", "ccc:cc", "bce:ut",
  386. X    "hls:hl", "xhpa:YA", "crxm:YB", "daisy:YC", "xvpa:YD",
  387. X    "sam:YE", "cpix:YF", "lpix:YG", "cols:co", "it:it",
  388. X    "lines:li", "lm:lm", "xmc:sg", "pb:pb", "vt:vt", "wsl:ws",
  389. X    "nlab:Nl", "lh:lh", "lw:lw", "ma:ma", "wnum:MW", "colors:Co",
  390. X    "pairs:pa", "ncv:NC", "bufsz:Ya", "spinv:Yb", "spinh:Yc",
  391. X    "maddr:Yd", "mjump:Ye", "mcs:Yf", "mls:Yg", "npins:Yh",
  392. X    "orc:Yi", "orl:Yj", "orhi:Yk", "orvi:Yl", "cps:Ym",
  393. X    "widcs:Yn", "cbt:bt", "bel:bl", "cr:cr", "csr:cs", "tbc:ct",
  394. X    "clear:cl", "el:ce", "ed:cd", "hpa:ch", "cmdch:CC", "cup:cm",
  395. X    "cud1:do", "home:ho", "civis:vi", "cub1:le", "mrcup:CM",
  396. X    "cnorm:ve", "cuf1:nd", "ll:ll", "cuu1:up", "cvvis:vs",
  397. X    "dch1:dc", "dl1:dl", "dsl:ds", "hd:hd", "smacs:as",
  398. X    "blink:mb", "bold:md", "smcup:ti", "smdc:dm", "dim:mh",
  399. X    "smir:im", "invis:mk", "prot:mp", "rev:mr", "smso:so",
  400. X    "smul:us", "ech:ec", "rmacs:ae", "sgr0:me", "rmcup:te",
  401. X    "rmdc:ed", "rmir:ei", "rmso:se", "rmul:ue", "flash:vb",
  402. X    "ff:ff", "fsl:fs", "is1:i1", "is2:is", "is3:i3", "if:if",
  403. X    "ich1:ic", "il1:al", "ip:ip", "kbs:kb", "ktbc:ka", "kclr:kC",
  404. X    "kctab:kt", "kdch1:kD", "kdl1:kL", "kcud1:kd", "krmir:kM",
  405. X    "kel:kE", "ked:kS", "kf0:k0", "kf1:k1", "kf10:k;", "kf2:k2",
  406. X    "kf3:k3", "kf4:k4", "kf5:k5", "kf6:k6", "kf7:k7", "kf8:k8",
  407. X    "kf9:k9", "khome:kh", "kich1:kI", "kil1:kA", "kcub1:kl",
  408. X    "kll:kH", "knp:kN", "kpp:kP", "kcuf1:kr", "kind:kF", "kri:kR",
  409. X    "khts:kT", "kcuu1:ku", "rmkx:ke", "smkx:ks", "lf0:l0",
  410. X    "lf1:l1", "lf10:la", "lf2:l2", "lf3:l3", "lf4:l4", "lf5:l5",
  411. X    "lf6:l6", "lf7:l7", "lf8:l8", "lf9:l9", "rmm:mo", "smm:mm",
  412. X    "nel:nw", "pad:pc", "dch:DC", "dl:DL", "cud:DO", "ich:IC",
  413. X    "indn:SF", "il:AL", "cub:LE", "cuf:RI", "rin:SR", "cuu:UP",
  414. X    "pfkey:pk", "pfloc:pl", "pfx:px", "mc0:ps", "mc4:pf",
  415. X    "mc5:po", "rep:rp", "rs1:r1", "rs2:r2", "rs3:r3", "rf:rf",
  416. X    "rc:rc", "vpa:cv", "sc:sc", "ind:sf", "ri:sr", "sgr:sa",
  417. X    "hts:st", "wind:wi", "ht:ta", "tsl:ts", "uc:uc", "hu:hu",
  418. X    "iprog:iP", "ka1:K1", "ka3:K3", "kb2:K2", "kc1:K4", "kc3:K5",
  419. X    "mc5p:pO", "rmp:rP", "acsc:ac", "pln:pn", "kcbt:kB",
  420. X    "smxon:SX", "rmxon:RX", "smam:SA", "rmam:RA", "xonc:XN",
  421. X    "xoffc:XF", "enacs:eA", "smln:LO", "rmln:LF", "kbeg:@1",
  422. X    "kcan:@2", "kclo:@3", "kcmd:@4", "kcpy:@5", "kcrt:@6",
  423. X    "kend:@7", "kent:@8", "kext:@9", "kfnd:@0", "khlp:%1",
  424. X    "kmrk:%2", "kmsg:%3", "kmov:%4", "knxt:%5", "kopn:%6",
  425. X    "kopt:%7", "kprv:%8", "kprt:%9", "krdo:%0", "kref:&1",
  426. X    "krfr:&2", "krpl:&3", "krst:&4", "kres:&5", "ksav:&6",
  427. X    "kspd:&7", "kund:&8", "kBEG:&9", "kCAN:&0", "kCMD:*1",
  428. X    "kCPY:*2", "kCRT:*3", "kDC:*4", "kDL:*5", "kslt:*6",
  429. X    "kEND:*7", "kEOL:*8", "kEXT:*9", "kFND:*0", "kHLP:#1",
  430. X    "kHOM:#2", "kIC:#3", "kLFT:#4", "kMSG:%a", "kMOV:%b",
  431. X    "kNXT:%c", "kOPT:%d", "kPRV:%e", "kPRT:%f", "kRDO:%g",
  432. X    "kRPL:%h", "kRIT:%i", "kRES:%j", "kSAV:!1", "kSPD:!2",
  433. X    "kUND:!3", "rfi:RF", "kf11:F1", "kf12:F2", "kf13:F3",
  434. X    "kf14:F4", "kf15:F5", "kf16:F6", "kf17:F7", "kf18:F8",
  435. X    "kf19:F9", "kf20:FA", "kf21:FB", "kf22:FC", "kf23:FD",
  436. X    "kf24:FE", "kf25:FF", "kf26:FG", "kf27:FH", "kf28:FI",
  437. X    "kf29:FJ", "kf30:FK", "kf31:FL", "kf32:FM", "kf33:FN",
  438. X    "kf34:FO", "kf35:FP", "kf36:FQ", "kf37:FR", "kf38:FS",
  439. X    "kf39:FT", "kf40:FU", "kf41:FV", "kf42:FW", "kf43:FX",
  440. X    "kf44:FY", "kf45:FZ", "kf46:Fa", "kf47:Fb", "kf48:Fc",
  441. X    "kf49:Fd", "kf50:Fe", "kf51:Ff", "kf52:Fg", "kf53:Fh",
  442. X    "kf54:Fi", "kf55:Fj", "kf56:Fk", "kf57:Fl", "kf58:Fm",
  443. X    "kf59:Fn", "kf60:Fo", "kf61:Fp", "kf62:Fq", "kf63:Fr",
  444. X    "el1:cb", "mgc:MC", "smgl:ML", "smgr:MR", "fln:Lf", "sclk:SC",
  445. X    "dclk:DK", "rmclk:RC", "cwin:CW", "wingo:WG", "hup:HU",
  446. X    "dial:DI", "qdial:QD", "tone:TO", "pulse:PU", "hook:fh",
  447. X    "pause:PA", "wait:WA", "u0:u0", "u1:u1", "u2:u2", "u3:u3",
  448. X    "u4:u4", "u5:u5", "u6:u6", "u7:u7", "u8:u8", "u9:u9", "op:op",
  449. X    "oc:oc", "initc:Ic", "initp:Ip", "scp:sp", "setf:Sf",
  450. X    "setb:Sb", "cpi:ZA", "lpi:ZB", "chr:ZC", "cvr:ZD", "defc:ZE",
  451. X    "swidm:ZF", "sdrfq:ZG", "sitm:ZH", "slm:ZI", "smicm:ZJ",
  452. X    "snlq:ZK", "snrmq:ZL", "sshm:ZM", "ssubm:ZN", "ssupm:ZO",
  453. X    "sum:ZP", "rwidm:ZQ", "ritm:ZR", "rlm:ZS", "rmicm:ZT",
  454. X    "rshm:ZU", "rsubm:ZV", "rsupm:ZW", "rum:ZX", "mhpa:ZY",
  455. X    "mcud1:ZZ", "mcub1:Za", "mcuf1:Zb", "mvpa:Zc", "mcuu1:Zd",
  456. X    "porder:Ze", "mcud:Zf", "mcub:Zg", "mcuf:Zh", "mcuu:Zi",
  457. X    "scs:Zj", "smgb:Zk", "smgbp:Zl", "smglp:Zm", "smgrp:Zn",
  458. X    "smgt:Zo", "smgtp:Zp", "sbim:Zq", "scsd:Zr", "rbim:Zs",
  459. X    "rcsd:Zt", "subcs:Zu", "supcs:Zv", "docr:Zw", "zerom:Zx",
  460. X    "csnm:Zy", 0};
  461. Xreadcaps() {
  462. X
  463. X    tgetent(cap_entry, getenv("TERM"));
  464. X#ifdef LIBTC
  465. X    for (s = cap_entry; *s != '|'; s++)
  466. X        if (*s == '\0' | *s == ':') { s = cap_entry; break; }
  467. X    if (*s == '|') s++;
  468. X    for (t = ttytype; *t = *s; t++, s++)
  469. X        if (*t == ':') { *t = '\0'; break; }
  470. X#endif
  471. X    auto_left_margin = tgetflag("bw");
  472. X    auto_right_margin = tgetflag("am");
  473. X    no_esc_ctlc = tgetflag("xb");
  474. X    ceol_standout_glitch = tgetflag("xs");
  475. X    eat_newline_glitch = tgetflag("xn");
  476. X    erase_overstrike = tgetflag("eo");
  477. X    generic_type = tgetflag("gn");
  478. X    hard_copy = tgetflag("hc");
  479. X    has_meta_key = tgetflag("km");
  480. X    has_status_line = tgetflag("hs");
  481. X    insert_null_glitch = tgetflag("in");
  482. X    memory_above = tgetflag("da");
  483. X    memory_below = tgetflag("db");
  484. X    move_insert_mode = tgetflag("mi");
  485. X    move_standout_mode = tgetflag("ms");
  486. X    over_strike = tgetflag("os");
  487. X    status_line_esc_ok = tgetflag("es");
  488. X    dest_tabs_magic_smso = tgetflag("xt");
  489. X    tilde_glitch = tgetflag("hz");
  490. X    transparent_underline = tgetflag("ul");
  491. X    xon_xoff = tgetflag("xo");
  492. X    needs_xon_xoff = tgetflag("nx");
  493. X    prtr_silent = tgetflag("5i");
  494. X    hard_cursor = tgetflag("HC");
  495. X    non_rev_rmcup = tgetflag("NR");
  496. X    no_pad_char = tgetflag("NP");
  497. X    non_dest_scroll_region = tgetflag("ND");
  498. X    can_change = tgetflag("cc");
  499. X    back_color_erase = tgetflag("ut");
  500. X    hue_lightness_saturation = tgetflag("hl");
  501. X    col_addr_glitch = tgetflag("YA");
  502. X    cr_cancels_micro_mode = tgetflag("YB");
  503. X    has_print_wheel = tgetflag("YC");
  504. X    row_addr_glitch = tgetflag("YD");
  505. X    semi_auto_right_margin = tgetflag("YE");
  506. X    cpi_changes_res = tgetflag("YF");
  507. X    lpi_changes_res = tgetflag("YG");
  508. X    physical_tabs = tgetflag("pt");
  509. X    columns = tgetnum("co");
  510. X#ifndef TC
  511. X    init_tabs = tgetnum("it");
  512. X#endif
  513. X    lines = tgetnum("li");
  514. X    lines_of_memory = tgetnum("lm");
  515. X    magic_cookie_glitch = tgetnum("sg");
  516. X    padding_baud_rate = tgetnum("pb");
  517. X    virtual_terminal = tgetnum("vt");
  518. X    width_status_line = tgetnum("ws");
  519. X    num_labels = tgetnum("Nl");
  520. X    label_height = tgetnum("lh");
  521. X    label_width = tgetnum("lw");
  522. X    max_attributes = tgetnum("ma");
  523. X    maximum_windows = tgetnum("MW");
  524. X    max_colors = tgetnum("Co");
  525. X    max_pairs = tgetnum("pa");
  526. X    no_color_video = tgetnum("NC");
  527. X    buffer_capacity = tgetnum("Ya");
  528. X    dot_vert_spacing = tgetnum("Yb");
  529. X    dot_horz_spacing = tgetnum("Yc");
  530. X    max_micro_address = tgetnum("Yd");
  531. X    max_micro_jump = tgetnum("Ye");
  532. X    micro_char_size = tgetnum("Yf");
  533. X    micro_line_size = tgetnum("Yg");
  534. X    number_of_pins = tgetnum("Yh");
  535. X    output_res_char = tgetnum("Yi");
  536. X    output_res_line = tgetnum("Yj");
  537. X    output_res_horz_inch = tgetnum("Yk");
  538. X    output_res_vert_inch = tgetnum("Yl");
  539. X    print_rate = tgetnum("Ym");
  540. X    wide_char_size = tgetnum("Yn");
  541. X#ifdef TC
  542. X    enter_lab("m0", tgetstr("m0", &bb), "M0", tgetstr("M0", &bb));
  543. X    enter_lab("m1", tgetstr("m1", &bb), "M1", tgetstr("M1", &bb));
  544. X    enter_lab("m2", tgetstr("m2", &bb), "M2", tgetstr("M2", &bb));
  545. X    enter_lab("m3", tgetstr("m3", &bb), "M3", tgetstr("M3", &bb));
  546. X    enter_lab("m4", tgetstr("m4", &bb), "M4", tgetstr("M4", &bb));
  547. X    enter_lab("m5", tgetstr("m5", &bb), "M5", tgetstr("M5", &bb));
  548. X    enter_lab("m6", tgetstr("m6", &bb), "M6", tgetstr("M6", &bb));
  549. X    enter_lab("m7", tgetstr("m7", &bb), "M7", tgetstr("M7", &bb));
  550. X    enter_lab("m8", tgetstr("m8", &bb), "M8", tgetstr("M8", &bb));
  551. X    enter_lab("m9", tgetstr("m9", &bb), "M9", tgetstr("M9", &bb));
  552. X    enter_lab("n0", tgetstr("n0", &bb), "N0", tgetstr("N0", &bb));
  553. X    enter_lab("n1", tgetstr("n1", &bb), "N1", tgetstr("N1", &bb));
  554. X    enter_lab("n2", tgetstr("n2", &bb), "N2", tgetstr("N2", &bb));
  555. X    enter_lab("n3", tgetstr("n3", &bb), "N3", tgetstr("N3", &bb));
  556. X    enter_lab("n4", tgetstr("n4", &bb), "N4", tgetstr("N4", &bb));
  557. X    enter_lab("n5", tgetstr("n5", &bb), "N5", tgetstr("N5", &bb));
  558. X    enter_lab("n6", tgetstr("n6", &bb), "N6", tgetstr("N6", &bb));
  559. X    enter_lab("n7", tgetstr("n7", &bb), "N7", tgetstr("N7", &bb));
  560. X    enter_lab("n8", tgetstr("n8", &bb), "N8", tgetstr("N8", &bb));
  561. X    enter_lab("n9", tgetstr("n9", &bb), "N9", tgetstr("N9", &bb));
  562. X    enter_lab("o0", tgetstr("o0", &bb), "O0", tgetstr("O0", &bb));
  563. X    enter_lab("o1", tgetstr("o1", &bb), "O1", tgetstr("O1", &bb));
  564. X    enter_lab("o2", tgetstr("o2", &bb), "O2", tgetstr("O2", &bb));
  565. X    enter_lab("o3", tgetstr("o3", &bb), "O3", tgetstr("O3", &bb));
  566. X    enter_lab("o4", tgetstr("o4", &bb), "O4", tgetstr("O4", &bb));
  567. X    enter_lab("o5", tgetstr("o5", &bb), "O5", tgetstr("O5", &bb));
  568. X    enter_lab("o6", tgetstr("o6", &bb), "O6", tgetstr("O6", &bb));
  569. X    enter_lab("o7", tgetstr("o7", &bb), "O7", tgetstr("O7", &bb));
  570. X    enter_lab("o8", tgetstr("o8", &bb), "O8", tgetstr("O8", &bb));
  571. X    enter_lab("o9", tgetstr("o9", &bb), "O9", tgetstr("O9", &bb));
  572. X    enter_lab("p0", tgetstr("p0", &bb), "P0", tgetstr("P0", &bb));
  573. X    enter_lab("p1", tgetstr("p1", &bb), "P1", tgetstr("P1", &bb));
  574. X    enter_lab("p2", tgetstr("p2", &bb), "P2", tgetstr("P2", &bb));
  575. X    enter_lab("p3", tgetstr("p3", &bb), "P3", tgetstr("P3", &bb));
  576. X    enter_lab("p4", tgetstr("p4", &bb), "P4", tgetstr("P4", &bb));
  577. X    enter_lab("p5", tgetstr("p5", &bb), "P5", tgetstr("P5", &bb));
  578. X    enter_lab("p6", tgetstr("p6", &bb), "P6", tgetstr("P6", &bb));
  579. X    enter_lab("p7", tgetstr("p7", &bb), "P7", tgetstr("P7", &bb));
  580. X    enter_lab("p8", tgetstr("p8", &bb), "P8", tgetstr("P8", &bb));
  581. X    enter_lab("p9", tgetstr("p9", &bb), "P9", tgetstr("P9", &bb));
  582. X    enter_lab("q0", tgetstr("q0", &bb), "Q0", tgetstr("Q0", &bb));
  583. X    enter_lab("q1", tgetstr("q1", &bb), "Q1", tgetstr("Q1", &bb));
  584. X    enter_lab("q2", tgetstr("q2", &bb), "Q2", tgetstr("Q2", &bb));
  585. X    enter_lab("q3", tgetstr("q3", &bb), "Q3", tgetstr("Q3", &bb));
  586. X    enter_lab("q4", tgetstr("q4", &bb), "Q4", tgetstr("Q4", &bb));
  587. X    enter_lab("q5", tgetstr("q5", &bb), "Q5", tgetstr("Q5", &bb));
  588. X    enter_lab("q6", tgetstr("q6", &bb), "Q6", tgetstr("Q6", &bb));
  589. X    enter_lab("q7", tgetstr("q7", &bb), "Q7", tgetstr("Q7", &bb));
  590. X    enter_lab("q8", tgetstr("q8", &bb), "Q8", tgetstr("Q8", &bb));
  591. X    enter_lab("q9", tgetstr("q9", &bb), "Q9", tgetstr("Q9", &bb));
  592. X    enter_lab("r0", tgetstr("r0", &bb), "R0", tgetstr("R0", &bb));
  593. X    enter_lab("r1", tgetstr("r1", &bb), "R1", tgetstr("R1", &bb));
  594. X    enter_lab("r2", tgetstr("r2", &bb), "R2", tgetstr("R2", &bb));
  595. X    enter_lab("r3", tgetstr("r3", &bb), "R3", tgetstr("R3", &bb));
  596. X    enter_lab("r4", tgetstr("r4", &bb), "R4", tgetstr("R4", &bb));
  597. X    enter_lab("r5", tgetstr("r5", &bb), "R5", tgetstr("R5", &bb));
  598. X    enter_lab("r6", tgetstr("r6", &bb), "R6", tgetstr("R6", &bb));
  599. X    enter_lab("r7", tgetstr("r7", &bb), "R7", tgetstr("R7", &bb));
  600. X    enter_lab("r8", tgetstr("r8", &bb), "R8", tgetstr("R8", &bb));
  601. X    enter_lab("r9", tgetstr("r9", &bb), "R9", tgetstr("R9", &bb));
  602. X    enter_lab("s0", tgetstr("s0", &bb), "S0", tgetstr("S0", &bb));
  603. X    enter_lab("s1", tgetstr("s1", &bb), "S1", tgetstr("S1", &bb));
  604. X    enter_lab("s2", tgetstr("s2", &bb), "S2", tgetstr("S2", &bb));
  605. X    enter_lab("s3", tgetstr("s3", &bb), "S3", tgetstr("S3", &bb));
  606. X    enter_lab("s4", tgetstr("s4", &bb), "S4", tgetstr("S4", &bb));
  607. X    enter_lab("s5", tgetstr("s5", &bb), "S5", tgetstr("S5", &bb));
  608. X    enter_lab("s6", tgetstr("s6", &bb), "S6", tgetstr("S6", &bb));
  609. X    enter_lab("s7", tgetstr("s7", &bb), "S7", tgetstr("S7", &bb));
  610. X    enter_lab("s8", tgetstr("s8", &bb), "S8", tgetstr("S8", &bb));
  611. X    enter_lab("s9", tgetstr("s9", &bb), "S9", tgetstr("S9", &bb));
  612. X    enter_lab("t0", tgetstr("t0", &bb), "T0", tgetstr("T0", &bb));
  613. X    enter_lab("t1", tgetstr("t1", &bb), "T1", tgetstr("T1", &bb));
  614. X    enter_lab("t2", tgetstr("t2", &bb), "T2", tgetstr("T2", &bb));
  615. X    enter_lab("t3", tgetstr("t3", &bb), "T3", tgetstr("T3", &bb));
  616. X    enter_lab("t4", tgetstr("t4", &bb), "T4", tgetstr("T4", &bb));
  617. X    enter_lab("t5", tgetstr("t5", &bb), "T5", tgetstr("T5", &bb));
  618. X    enter_lab("t6", tgetstr("t6", &bb), "T6", tgetstr("T6", &bb));
  619. X    enter_lab("t7", tgetstr("t7", &bb), "T7", tgetstr("T7", &bb));
  620. X    enter_lab("t8", tgetstr("t8", &bb), "T8", tgetstr("T8", &bb));
  621. X    enter_lab("t9", tgetstr("t9", &bb), "T9", tgetstr("T9", &bb));
  622. X    enter_lab("u0", tgetstr("u0", &bb), "U0", tgetstr("U0", &bb));
  623. X    enter_lab("u1", tgetstr("u1", &bb), "U1", tgetstr("U1", &bb));
  624. X    enter_lab("u2", tgetstr("u2", &bb), "U2", tgetstr("U2", &bb));
  625. X    enter_lab("u3", tgetstr("u3", &bb), "U3", tgetstr("U3", &bb));
  626. X    enter_lab("u4", tgetstr("u4", &bb), "U4", tgetstr("U4", &bb));
  627. X    enter_lab("u5", tgetstr("u5", &bb), "U5", tgetstr("U5", &bb));
  628. X    enter_lab("u6", tgetstr("u6", &bb), "U6", tgetstr("U6", &bb));
  629. X    enter_lab("u7", tgetstr("u7", &bb), "U7", tgetstr("U7", &bb));
  630. X    enter_lab("u8", tgetstr("u8", &bb), "U8", tgetstr("U8", &bb));
  631. X    enter_lab("u9", tgetstr("u9", &bb), "U9", tgetstr("U9", &bb));
  632. X    enter_lab("v0", tgetstr("v0", &bb), "V0", tgetstr("V0", &bb));
  633. X    enter_lab("v1", tgetstr("v1", &bb), "V1", tgetstr("V1", &bb));
  634. X    enter_lab("v2", tgetstr("v2", &bb), "V2", tgetstr("V2", &bb));
  635. X    enter_lab("v3", tgetstr("v3", &bb), "V3", tgetstr("V3", &bb));
  636. X    enter_lab("v4", tgetstr("v4", &bb), "V4", tgetstr("V4", &bb));
  637. X    enter_lab("v5", tgetstr("v5", &bb), "V5", tgetstr("V5", &bb));
  638. X    enter_lab("v6", tgetstr("v6", &bb), "V6", tgetstr("V6", &bb));
  639. X    enter_lab("v7", tgetstr("v7", &bb), "V7", tgetstr("V7", &bb));
  640. X    enter_lab("v8", tgetstr("v8", &bb), "V8", tgetstr("V8", &bb));
  641. X    enter_lab("v9", tgetstr("v9", &bb), "V9", tgetstr("V9", &bb));
  642. X    enter_lab("w0", tgetstr("w0", &bb), "W0", tgetstr("W0", &bb));
  643. X    enter_lab("w1", tgetstr("w1", &bb), "W1", tgetstr("W1", &bb));
  644. X    enter_lab("w2", tgetstr("w2", &bb), "W2", tgetstr("W2", &bb));
  645. X    enter_lab("w3", tgetstr("w3", &bb), "W3", tgetstr("W3", &bb));
  646. X    enter_lab("w4", tgetstr("w4", &bb), "W4", tgetstr("W4", &bb));
  647. X    enter_lab("w5", tgetstr("w5", &bb), "W5", tgetstr("W5", &bb));
  648. X    enter_lab("w6", tgetstr("w6", &bb), "W6", tgetstr("W6", &bb));
  649. X    enter_lab("w7", tgetstr("w7", &bb), "W7", tgetstr("W7", &bb));
  650. X    enter_lab("w8", tgetstr("w8", &bb), "W8", tgetstr("W8", &bb));
  651. X    enter_lab("w9", tgetstr("w9", &bb), "W9", tgetstr("W9", &bb));
  652. X    enter_lab("x0", tgetstr("x0", &bb), "X0", tgetstr("X0", &bb));
  653. X    enter_lab("x1", tgetstr("x1", &bb), "X1", tgetstr("X1", &bb));
  654. X    enter_lab("x2", tgetstr("x2", &bb), "X2", tgetstr("X2", &bb));
  655. X    enter_lab("x3", tgetstr("x3", &bb), "X3", tgetstr("X3", &bb));
  656. X    enter_lab("x4", tgetstr("x4", &bb), "X4", tgetstr("X4", &bb));
  657. X    enter_lab("x5", tgetstr("x5", &bb), "X5", tgetstr("X5", &bb));
  658. X    enter_lab("x6", tgetstr("x6", &bb), "X6", tgetstr("X6", &bb));
  659. X    enter_lab("x7", tgetstr("x7", &bb), "X7", tgetstr("X7", &bb));
  660. X    enter_lab("x8", tgetstr("x8", &bb), "X8", tgetstr("X8", &bb));
  661. X    enter_lab("x9", tgetstr("x9", &bb), "X9", tgetstr("X9", &bb));
  662. X    enter_lab("y0", tgetstr("y0", &bb), "Y0", tgetstr("Y0", &bb));
  663. X    enter_lab("y1", tgetstr("y1", &bb), "Y1", tgetstr("Y1", &bb));
  664. X    enter_lab("y2", tgetstr("y2", &bb), "Y2", tgetstr("Y2", &bb));
  665. X    enter_lab("y3", tgetstr("y3", &bb), "Y3", tgetstr("Y3", &bb));
  666. X    enter_lab("y4", tgetstr("y4", &bb), "Y4", tgetstr("Y4", &bb));
  667. X    enter_lab("y5", tgetstr("y5", &bb), "Y5", tgetstr("Y5", &bb));
  668. X    enter_lab("y6", tgetstr("y6", &bb), "Y6", tgetstr("Y6", &bb));
  669. X    enter_lab("y7", tgetstr("y7", &bb), "Y7", tgetstr("Y7", &bb));
  670. X    enter_lab("y8", tgetstr("y8", &bb), "Y8", tgetstr("Y8", &bb));
  671. X    enter_lab("y9", tgetstr("y9", &bb), "Y9", tgetstr("Y9", &bb));
  672. X    enter_lab("z0", tgetstr("z0", &bb), "Z0", tgetstr("Z0", &bb));
  673. X    enter_lab("z1", tgetstr("z1", &bb), "Z1", tgetstr("Z1", &bb));
  674. X    enter_lab("z2", tgetstr("z2", &bb), "Z2", tgetstr("Z2", &bb));
  675. X    enter_lab("z3", tgetstr("z3", &bb), "Z3", tgetstr("Z3", &bb));
  676. X    enter_lab("z4", tgetstr("z4", &bb), "Z4", tgetstr("Z4", &bb));
  677. X    enter_lab("z5", tgetstr("z5", &bb), "Z5", tgetstr("Z5", &bb));
  678. X    enter_lab("z6", tgetstr("z6", &bb), "Z6", tgetstr("Z6", &bb));
  679. X    enter_lab("z7", tgetstr("z7", &bb), "Z7", tgetstr("Z7", &bb));
  680. X    enter_lab("z8", tgetstr("z8", &bb), "Z8", tgetstr("Z8", &bb));
  681. X    enter_lab("z9", tgetstr("z9", &bb), "Z9", tgetstr("Z9", &bb));
  682. X    enter_lab("kz", tgetstr("kz", &bb), "00", tgetstr("00", &bb));
  683. X    enter_lab("kb", tgetstr("kb", &bb), "01", tgetstr("01", &bb));
  684. X    enter_lab("cr", tgetstr("cr", &bb), "02", tgetstr("02", &bb));
  685. X    enter_lab("bk", tgetstr("bk", &bb), "03", tgetstr("03", &bb));
  686. X    enter_lab("ta", tgetstr("ta", &bb), "04", tgetstr("04", &bb));
  687. X    enter_lab("bt", tgetstr("bt", &bb), "05", tgetstr("05", &bb));
  688. X    enter_lab("kl", tgetstr("kl", &bb), "06", tgetstr("06", &bb));
  689. X    enter_lab("kr", tgetstr("kr", &bb), "07", tgetstr("07", &bb));
  690. X    enter_lab("ku", tgetstr("ku", &bb), "08", tgetstr("08", &bb));
  691. X    enter_lab("kd", tgetstr("kd", &bb), "09", tgetstr("09", &bb));
  692. X    enter_lab("kh", tgetstr("kh", &bb), "10", tgetstr("10", &bb));
  693. X    enter_lab("EN", tgetstr("EN", &bb), "11", tgetstr("11", &bb));
  694. X    enter_lab("PU", tgetstr("PU", &bb), "12", tgetstr("12", &bb));
  695. X    enter_lab("PD", tgetstr("PD", &bb), "13", tgetstr("13", &bb));
  696. X    enter_lab("ki", tgetstr("ki", &bb), "14", tgetstr("14", &bb));
  697. X    enter_lab("kk", tgetstr("kk", &bb), "15", tgetstr("15", &bb));
  698. X    enter_lab("LI", tgetstr("LI", &bb), "16", tgetstr("16", &bb));
  699. X    enter_lab("LD", tgetstr("LD", &bb), "17", tgetstr("17", &bb));
  700. X    enter_lab("kp", tgetstr("kp", &bb), "18", tgetstr("18", &bb));
  701. X    enter_lab("ek", tgetstr("ek", &bb), "19", tgetstr("19", &bb));
  702. X    enter_lab("ck", tgetstr("ck", &bb), "20", tgetstr("20", &bb));
  703. X    enter_lab("pk", tgetstr("pk", &bb), "21", tgetstr("21", &bb));
  704. X    enter_lab("mk", tgetstr("mk", &bb), "22", tgetstr("22", &bb));
  705. X    enter_lab("nk", tgetstr("nk", &bb), "23", tgetstr("23", &bb));
  706. X    enter_lab("ok", tgetstr("ok", &bb), "24", tgetstr("24", &bb));
  707. X#endif
  708. X    back_tab = tgetstr("bt", &bb);
  709. X    bell = tgetstr("bl", &bb);
  710. X    carriage_return = tgetstr("cr", &bb);
  711. X    change_scroll_region = tgetstr("cs", &bb);
  712. X    clear_all_tabs = tgetstr("ct", &bb);
  713. X    clear_screen = tgetstr("cl", &bb);
  714. X    clr_eol = tgetstr("ce", &bb);
  715. X    clr_eos = tgetstr("cd", &bb);
  716. X    column_address = tgetstr("ch", &bb);
  717. X    command_character = tgetstr("CC", &bb);
  718. X    cursor_address = tgetstr("cm", &bb);
  719. X    cursor_down = tgetstr("do", &bb);
  720. X    cursor_home = tgetstr("ho", &bb);
  721. X    cursor_invisible = tgetstr("vi", &bb);
  722. X    cursor_left = tgetstr("le", &bb);
  723. X    cursor_mem_address = tgetstr("CM", &bb);
  724. X    cursor_normal = tgetstr("ve", &bb);
  725. X    cursor_right = tgetstr("nd", &bb);
  726. X    cursor_to_ll = tgetstr("ll", &bb);
  727. X    cursor_up = tgetstr("up", &bb);
  728. X    cursor_visible = tgetstr("vs", &bb);
  729. X    delete_character = tgetstr("dc", &bb);
  730. X    delete_line = tgetstr("dl", &bb);
  731. X    dis_status_line = tgetstr("ds", &bb);
  732. X    down_half_line = tgetstr("hd", &bb);
  733. X    enter_alt_charset_mode = tgetstr("as", &bb);
  734. X    enter_blink_mode = tgetstr("mb", &bb);
  735. X    enter_bold_mode = tgetstr("md", &bb);
  736. X    enter_ca_mode = tgetstr("ti", &bb);
  737. X    enter_delete_mode = tgetstr("dm", &bb);
  738. X    enter_dim_mode = tgetstr("mh", &bb);
  739. X    enter_insert_mode = tgetstr("im", &bb);
  740. X    enter_secure_mode = tgetstr("mk", &bb);
  741. X    enter_protected_mode = tgetstr("mp", &bb);
  742. X    enter_reverse_mode = tgetstr("mr", &bb);
  743. X    enter_standout_mode = tgetstr("so", &bb);
  744. X    enter_underline_mode = tgetstr("us", &bb);
  745. X    erase_chars = tgetstr("ec", &bb);
  746. X    exit_alt_charset_mode = tgetstr("ae", &bb);
  747. X    exit_attribute_mode = tgetstr("me", &bb);
  748. X    exit_ca_mode = tgetstr("te", &bb);
  749. X    exit_delete_mode = tgetstr("ed", &bb);
  750. X    exit_insert_mode = tgetstr("ei", &bb);
  751. X    exit_standout_mode = tgetstr("se", &bb);
  752. X    exit_underline_mode = tgetstr("ue", &bb);
  753. X    flash_screen = tgetstr("vb", &bb);
  754. X    form_feed = tgetstr("ff", &bb);
  755. X    from_status_line = tgetstr("fs", &bb);
  756. X    init_1string = tgetstr("i1", &bb);
  757. X    init_2string = tgetstr("is", &bb);
  758. X    init_3string = tgetstr("i3", &bb);
  759. X    init_file = tgetstr("if", &bb);
  760. X    insert_character = tgetstr("ic", &bb);
  761. X    insert_line = tgetstr("al", &bb);
  762. X    insert_padding = tgetstr("ip", &bb);
  763. X    enter_key("kb", key_backspace = tgetstr("kb", &bb));
  764. X    enter_key("ka", key_catab = tgetstr("ka", &bb));
  765. X    enter_key("kC", key_clear = tgetstr("kC", &bb));
  766. X    enter_key("kt", key_ctab = tgetstr("kt", &bb));
  767. X    enter_key("kD", key_dc = tgetstr("kD", &bb));
  768. X    enter_key("kL", key_dl = tgetstr("kL", &bb));
  769. X    enter_key("kd", key_down = tgetstr("kd", &bb));
  770. X    enter_key("kM", key_eic = tgetstr("kM", &bb));
  771. X    enter_key("kE", key_eol = tgetstr("kE", &bb));
  772. X    enter_key("kS", key_eos = tgetstr("kS", &bb));
  773. X    enter_lab("k0", key_f0 = tgetstr("k0", &bb),
  774. X        "l0", lab_f0 = tgetstr("l0", &bb));
  775. X    enter_lab("k1", key_f1 = tgetstr("k1", &bb),
  776. X        "l1", lab_f1 = tgetstr("l1", &bb));
  777. X    enter_lab("k;", key_f10 = tgetstr("k;", &bb),
  778. X        "l;", lab_f10 = tgetstr("l;", &bb));
  779. X    enter_lab("k2", key_f2 = tgetstr("k2", &bb),
  780. X        "l2", lab_f2 = tgetstr("l2", &bb));
  781. X    enter_lab("k3", key_f3 = tgetstr("k3", &bb),
  782. X        "l3", lab_f3 = tgetstr("l3", &bb));
  783. X    enter_lab("k4", key_f4 = tgetstr("k4", &bb),
  784. X        "l4", lab_f4 = tgetstr("l4", &bb));
  785. X    enter_lab("k5", key_f5 = tgetstr("k5", &bb),
  786. X        "l5", lab_f5 = tgetstr("l5", &bb));
  787. X    enter_lab("k6", key_f6 = tgetstr("k6", &bb),
  788. X        "l6", lab_f6 = tgetstr("l6", &bb));
  789. X    enter_lab("k7", key_f7 = tgetstr("k7", &bb),
  790. X        "l7", lab_f7 = tgetstr("l7", &bb));
  791. X    enter_lab("k8", key_f8 = tgetstr("k8", &bb),
  792. X        "l8", lab_f8 = tgetstr("l8", &bb));
  793. X    enter_lab("k9", key_f9 = tgetstr("k9", &bb),
  794. X        "l9", lab_f9 = tgetstr("l9", &bb));
  795. X    enter_key("kh", key_home = tgetstr("kh", &bb));
  796. X    enter_key("kI", key_ic = tgetstr("kI", &bb));
  797. X    enter_key("kA", key_il = tgetstr("kA", &bb));
  798. X    enter_key("kl", key_left = tgetstr("kl", &bb));
  799. X    enter_key("kH", key_ll = tgetstr("kH", &bb));
  800. X    enter_key("kN", key_npage = tgetstr("kN", &bb));
  801. X    enter_key("kP", key_ppage = tgetstr("kP", &bb));
  802. X    enter_key("kr", key_right = tgetstr("kr", &bb));
  803. X    enter_key("kF", key_sf = tgetstr("kF", &bb));
  804. X    enter_key("kR", key_sr = tgetstr("kR", &bb));
  805. X    enter_key("kT", key_stab = tgetstr("kT", &bb));
  806. X    enter_key("ku", key_up = tgetstr("ku", &bb));
  807. X    keypad_local = tgetstr("ke", &bb);
  808. X    keypad_xmit = tgetstr("ks", &bb);
  809. X    lab_f0 = tgetstr("l0", &bb);
  810. X    lab_f1 = tgetstr("l1", &bb);
  811. X    lab_f10 = tgetstr("la", &bb);
  812. X    lab_f2 = tgetstr("l2", &bb);
  813. X    lab_f3 = tgetstr("l3", &bb);
  814. X    lab_f4 = tgetstr("l4", &bb);
  815. X    lab_f5 = tgetstr("l5", &bb);
  816. X    lab_f6 = tgetstr("l6", &bb);
  817. X    lab_f7 = tgetstr("l7", &bb);
  818. X    lab_f8 = tgetstr("l8", &bb);
  819. X    lab_f9 = tgetstr("l9", &bb);
  820. X    meta_off = tgetstr("mo", &bb);
  821. X    meta_on = tgetstr("mm", &bb);
  822. X    newline = tgetstr("nw", &bb);
  823. X    pad_char = tgetstr("pc", &bb);
  824. X    parm_dch = tgetstr("DC", &bb);
  825. X    parm_delete_line = tgetstr("DL", &bb);
  826. X    parm_down_cursor = tgetstr("DO", &bb);
  827. X    parm_ich = tgetstr("IC", &bb);
  828. X    parm_index = tgetstr("SF", &bb);
  829. X    parm_insert_line = tgetstr("AL", &bb);
  830. X    parm_left_cursor = tgetstr("LE", &bb);
  831. X    parm_right_cursor = tgetstr("RI", &bb);
  832. X    parm_rindex = tgetstr("SR", &bb);
  833. X    parm_up_cursor = tgetstr("UP", &bb);
  834. X    pkey_key = tgetstr("pk", &bb);
  835. X    pkey_local = tgetstr("pl", &bb);
  836. X    pkey_xmit = tgetstr("px", &bb);
  837. X    print_screen = tgetstr("ps", &bb);
  838. X    prtr_off = tgetstr("pf", &bb);
  839. X    prtr_on = tgetstr("po", &bb);
  840. X    repeat_char = tgetstr("rp", &bb);
  841. X#ifndef TC
  842. X    reset_1string = tgetstr("r1", &bb);
  843. X    reset_2string = tgetstr("r2", &bb);
  844. X    reset_3string = tgetstr("r3", &bb);
  845. X#endif
  846. X    reset_file = tgetstr("rf", &bb);
  847. X    restore_cursor = tgetstr("rc", &bb);
  848. X    row_address = tgetstr("cv", &bb);
  849. X    save_cursor = tgetstr("sc", &bb);
  850. X    scroll_forward = tgetstr("sf", &bb);
  851. X    scroll_reverse = tgetstr("sr", &bb);
  852. X    set_attributes = tgetstr("sa", &bb);
  853. X    set_tab = tgetstr("st", &bb);
  854. X    set_window = tgetstr("wi", &bb);
  855. X    enter_key("ta", tab = tgetstr("ta", &bb));
  856. X    to_status_line = tgetstr("ts", &bb);
  857. X    underline_char = tgetstr("uc", &bb);
  858. X    up_half_line = tgetstr("hu", &bb);
  859. X    init_prog = tgetstr("iP", &bb);
  860. X    key_a1 = tgetstr("K1", &bb);
  861. X    key_a3 = tgetstr("K3", &bb);
  862. X    key_b2 = tgetstr("K2", &bb);
  863. X    key_c1 = tgetstr("K4", &bb);
  864. X    key_c3 = tgetstr("K5", &bb);
  865. X    prtr_non = tgetstr("pO", &bb);
  866. X    char_padding = tgetstr("rP", &bb);
  867. X    acs_chars = tgetstr("ac", &bb);
  868. X    plab_norm = tgetstr("pn", &bb);
  869. X    key_btab = tgetstr("kB", &bb);
  870. X    enter_xon_mode = tgetstr("SX", &bb);
  871. X    exit_xon_mode = tgetstr("RX", &bb);
  872. X    enter_am_mode = tgetstr("SA", &bb);
  873. X    exit_am_mode = tgetstr("RA", &bb);
  874. X    xon_character = tgetstr("XN", &bb);
  875. X    xoff_character = tgetstr("XF", &bb);
  876. X    ena_acs = tgetstr("eA", &bb);
  877. X    label_on = tgetstr("LO", &bb);
  878. X    label_off = tgetstr("LF", &bb);
  879. X    key_beg = tgetstr("@1", &bb);
  880. X    key_cancel = tgetstr("@2", &bb);
  881. X    key_close = tgetstr("@3", &bb);
  882. X    key_command = tgetstr("@4", &bb);
  883. X    key_copy = tgetstr("@5", &bb);
  884. X    key_create = tgetstr("@6", &bb);
  885. X    key_end = tgetstr("@7", &bb);
  886. X    key_enter = tgetstr("@8", &bb);
  887. X    key_exit = tgetstr("@9", &bb);
  888. X    key_find = tgetstr("@0", &bb);
  889. X    key_help = tgetstr("%1", &bb);
  890. X    key_mark = tgetstr("%2", &bb);
  891. X    key_message = tgetstr("%3", &bb);
  892. X    key_move = tgetstr("%4", &bb);
  893. X    key_next = tgetstr("%5", &bb);
  894. X    key_open = tgetstr("%6", &bb);
  895. X    key_options = tgetstr("%7", &bb);
  896. X    key_previous = tgetstr("%8", &bb);
  897. X    key_print = tgetstr("%9", &bb);
  898. X    key_redo = tgetstr("%0", &bb);
  899. X    key_reference = tgetstr("&1", &bb);
  900. X    key_refresh = tgetstr("&2", &bb);
  901. X    key_replace = tgetstr("&3", &bb);
  902. X    key_restart = tgetstr("&4", &bb);
  903. X    key_resume = tgetstr("&5", &bb);
  904. X    key_save = tgetstr("&6", &bb);
  905. X    key_suspend = tgetstr("&7", &bb);
  906. X    key_undo = tgetstr("&8", &bb);
  907. X    key_sbeg = tgetstr("&9", &bb);
  908. X    key_scancel = tgetstr("&0", &bb);
  909. X    key_scommand = tgetstr("*1", &bb);
  910. X    key_scopy = tgetstr("*2", &bb);
  911. X    key_screate = tgetstr("*3", &bb);
  912. X    key_sdc = tgetstr("*4", &bb);
  913. X    key_sdl = tgetstr("*5", &bb);
  914. X    key_select = tgetstr("*6", &bb);
  915. X    key_send = tgetstr("*7", &bb);
  916. X    key_seol = tgetstr("*8", &bb);
  917. X    key_sexit = tgetstr("*9", &bb);
  918. X    key_sfind = tgetstr("*0", &bb);
  919. X    key_shelp = tgetstr("#1", &bb);
  920. X    key_shome = tgetstr("#2", &bb);
  921. X    key_sic = tgetstr("#3", &bb);
  922. X    key_sleft = tgetstr("#4", &bb);
  923. X    key_smessage = tgetstr("%a", &bb);
  924. X    key_smove = tgetstr("%b", &bb);
  925. X    key_snext = tgetstr("%c", &bb);
  926. X    key_soptions = tgetstr("%d", &bb);
  927. X    key_sprevious = tgetstr("%e", &bb);
  928. X    key_sprint = tgetstr("%f", &bb);
  929. X    key_sredo = tgetstr("%g", &bb);
  930. X    key_sreplace = tgetstr("%h", &bb);
  931. X    key_sright = tgetstr("%i", &bb);
  932. X    key_srsume = tgetstr("%j", &bb);
  933. X    key_ssave = tgetstr("!1", &bb);
  934. X    key_ssuspend = tgetstr("!2", &bb);
  935. X    key_sundo = tgetstr("!3", &bb);
  936. X    req_for_input = tgetstr("RF", &bb);
  937. X    key_f11 = tgetstr("F1", &bb);
  938. X    key_f12 = tgetstr("F2", &bb);
  939. X    key_f13 = tgetstr("F3", &bb);
  940. X    key_f14 = tgetstr("F4", &bb);
  941. X    key_f15 = tgetstr("F5", &bb);
  942. X    key_f16 = tgetstr("F6", &bb);
  943. X    key_f17 = tgetstr("F7", &bb);
  944. X    key_f18 = tgetstr("F8", &bb);
  945. X    key_f19 = tgetstr("F9", &bb);
  946. X    key_f20 = tgetstr("FA", &bb);
  947. X    key_f21 = tgetstr("FB", &bb);
  948. X    key_f22 = tgetstr("FC", &bb);
  949. X    key_f23 = tgetstr("FD", &bb);
  950. X    key_f24 = tgetstr("FE", &bb);
  951. X    key_f25 = tgetstr("FF", &bb);
  952. X    key_f26 = tgetstr("FG", &bb);
  953. X    key_f27 = tgetstr("FH", &bb);
  954. X    key_f28 = tgetstr("FI", &bb);
  955. X    key_f29 = tgetstr("FJ", &bb);
  956. X    key_f30 = tgetstr("FK", &bb);
  957. X    key_f31 = tgetstr("FL", &bb);
  958. X    key_f32 = tgetstr("FM", &bb);
  959. X    key_f33 = tgetstr("FN", &bb);
  960. X    key_f34 = tgetstr("FO", &bb);
  961. X    key_f35 = tgetstr("FP", &bb);
  962. X    key_f36 = tgetstr("FQ", &bb);
  963. X    key_f37 = tgetstr("FR", &bb);
  964. X    key_f38 = tgetstr("FS", &bb);
  965. X    key_f39 = tgetstr("FT", &bb);
  966. X    key_f40 = tgetstr("FU", &bb);
  967. X    key_f41 = tgetstr("FV", &bb);
  968. X    key_f42 = tgetstr("FW", &bb);
  969. X    key_f43 = tgetstr("FX", &bb);
  970. X    key_f44 = tgetstr("FY", &bb);
  971. X    key_f45 = tgetstr("FZ", &bb);
  972. X    key_f46 = tgetstr("Fa", &bb);
  973. X    key_f47 = tgetstr("Fb", &bb);
  974. X    key_f48 = tgetstr("Fc", &bb);
  975. X    key_f49 = tgetstr("Fd", &bb);
  976. X    key_f50 = tgetstr("Fe", &bb);
  977. X    key_f51 = tgetstr("Ff", &bb);
  978. X    key_f52 = tgetstr("Fg", &bb);
  979. X    key_f53 = tgetstr("Fh", &bb);
  980. X    key_f54 = tgetstr("Fi", &bb);
  981. X    key_f55 = tgetstr("Fj", &bb);
  982. X    key_f56 = tgetstr("Fk", &bb);
  983. X    key_f57 = tgetstr("Fl", &bb);
  984. X    key_f58 = tgetstr("Fm", &bb);
  985. X    key_f59 = tgetstr("Fn", &bb);
  986. X    key_f60 = tgetstr("Fo", &bb);
  987. X    key_f61 = tgetstr("Fp", &bb);
  988. X    key_f62 = tgetstr("Fq", &bb);
  989. X    key_f63 = tgetstr("Fr", &bb);
  990. X    clr_bol = tgetstr("cb", &bb);
  991. X    clear_margins = tgetstr("MC", &bb);
  992. X    set_left_margin = tgetstr("ML", &bb);
  993. X    set_right_margin = tgetstr("MR", &bb);
  994. X    label_format = tgetstr("Lf", &bb);
  995. X    set_clock = tgetstr("SC", &bb);
  996. X    display_clock = tgetstr("DK", &bb);
  997. X    remove_clock = tgetstr("RC", &bb);
  998. X    create_window = tgetstr("CW", &bb);
  999. X    goto_window = tgetstr("WG", &bb);
  1000. X    hangup = tgetstr("HU", &bb);
  1001. X    dial_phone = tgetstr("DI", &bb);
  1002. X    quick_dial = tgetstr("QD", &bb);
  1003. X    tone = tgetstr("TO", &bb);
  1004. X    pulse = tgetstr("PU", &bb);
  1005. X    flash_hook = tgetstr("fh", &bb);
  1006. X    fixed_pause = tgetstr("PA", &bb);
  1007. X    wait_tone = tgetstr("WA", &bb);
  1008. X#ifndef TC
  1009. X    user0 = tgetstr("u0", &bb);
  1010. X    user1 = tgetstr("u1", &bb);
  1011. X    user2 = tgetstr("u2", &bb);
  1012. X    user3 = tgetstr("u3", &bb);
  1013. X    user4 = tgetstr("u4", &bb);
  1014. X    user5 = tgetstr("u5", &bb);
  1015. X    user6 = tgetstr("u6", &bb);
  1016. X    user7 = tgetstr("u7", &bb);
  1017. X    user8 = tgetstr("u8", &bb);
  1018. X    user9 = tgetstr("u9", &bb);
  1019. X#endif
  1020. X    orig_pair = tgetstr("op", &bb);
  1021. X    orig_colors = tgetstr("oc", &bb);
  1022. X    initialize_color = tgetstr("Ic", &bb);
  1023. X    initialize_pair = tgetstr("Ip", &bb);
  1024. X    set_color_pair = tgetstr("sp", &bb);
  1025. X    set_foreground = tgetstr("Sf", &bb);
  1026. X    set_background = tgetstr("Sb", &bb);
  1027. X    change_char_pitch = tgetstr("ZA", &bb);
  1028. X    change_line_pitch = tgetstr("ZB", &bb);
  1029. X    change_res_horz = tgetstr("ZC", &bb);
  1030. X    change_res_vert = tgetstr("ZD", &bb);
  1031. X    define_char = tgetstr("ZE", &bb);
  1032. X    enter_doublewide_mode = tgetstr("ZF", &bb);
  1033. X    enter_draft_quality = tgetstr("ZG", &bb);
  1034. X    enter_italics_mode = tgetstr("ZH", &bb);
  1035. X    enter_leftward_mode = tgetstr("ZI", &bb);
  1036. X    enter_micro_mode = tgetstr("ZJ", &bb);
  1037. X    enter_near_letter_quality = tgetstr("ZK", &bb);
  1038. X    enter_normal_quality = tgetstr("ZL", &bb);
  1039. X    enter_shadow_mode = tgetstr("ZM", &bb);
  1040. X    enter_subscript_mode = tgetstr("ZN", &bb);
  1041. X    enter_superscript_mode = tgetstr("ZO", &bb);
  1042. X    enter_upward_mode = tgetstr("ZP", &bb);
  1043. X    exit_doublewide_mode = tgetstr("ZQ", &bb);
  1044. X    exit_italics_mode = tgetstr("ZR", &bb);
  1045. X    exit_leftward_mode = tgetstr("ZS", &bb);
  1046. X    exit_micro_mode = tgetstr("ZT", &bb);
  1047. X    exit_shadow_mode = tgetstr("ZU", &bb);
  1048. X    exit_subscript_mode = tgetstr("ZV", &bb);
  1049. X    exit_superscript_mode = tgetstr("ZW", &bb);
  1050. X    exit_upward_mode = tgetstr("ZX", &bb);
  1051. X    micro_column_address = tgetstr("ZY", &bb);
  1052. X    micro_down = tgetstr("ZZ", &bb);
  1053. X    micro_left = tgetstr("Za", &bb);
  1054. X    micro_right = tgetstr("Zb", &bb);
  1055. X    micro_row_address = tgetstr("Zc", &bb);
  1056. X    micro_up = tgetstr("Zd", &bb);
  1057. X    order_of_pins = tgetstr("Ze", &bb);
  1058. X    parm_down_micro = tgetstr("Zf", &bb);
  1059. X    parm_left_micro = tgetstr("Zg", &bb);
  1060. X    parm_right_micro = tgetstr("Zh", &bb);
  1061. X    parm_up_micro = tgetstr("Zi", &bb);
  1062. X    select_char_set = tgetstr("Zj", &bb);
  1063. X    set_bottom_margin = tgetstr("Zk", &bb);
  1064. X    set_bottom_margin_parm = tgetstr("Zl", &bb);
  1065. X    set_left_margin_parm = tgetstr("Zm", &bb);
  1066. X    set_right_margin_parm = tgetstr("Zn", &bb);
  1067. X    set_top_margin = tgetstr("Zo", &bb);
  1068. X    set_top_margin_parm = tgetstr("Zp", &bb);
  1069. X    start_bit_image = tgetstr("Zq", &bb);
  1070. X    start_char_set_def = tgetstr("Zr", &bb);
  1071. X    stop_bit_image = tgetstr("Zs", &bb);
  1072. X    stop_char_set_def = tgetstr("Zt", &bb);
  1073. X    subscript_characters = tgetstr("Zu", &bb);
  1074. X    superscript_characters = tgetstr("Zv", &bb);
  1075. X    these_cause_cr = tgetstr("Zw", &bb);
  1076. X    zero_motion = tgetstr("Zx", &bb);
  1077. X    char_set_names = tgetstr("Zy", &bb);
  1078. X    reset_string = tgetstr("rs");
  1079. X#ifdef TC
  1080. X    cursor_invisible = tgetstr("CF", &bb);
  1081. X    captrans[cap_index("civis", 5)] = "civis:CF";
  1082. X    cursor_on = tgetstr("CO", &bb);
  1083. X    enter_alt_charset_mode = tgetstr("GS", &bb);
  1084. X    captrans[cap_index("smacs", 5)] = "smacs:GS";
  1085. X    exit_alt_charset_mode = tgetstr("GE", &bb);
  1086. X    captrans[cap_index("rmacs", 5)] = "rmacs:GE";
  1087. X    color_terminal = tgetstr("ct", &bb);
  1088. X    clear_all_tabs = (char *) 0;
  1089. X#endif
  1090. X#ifdef XENIX
  1091. X    enter_alt_charset_mode = tgetstr("GS", &bb);
  1092. X    captrans[cap_index("smacs", 5)] = "smacs:GS";
  1093. X    exit_alt_charset_mode = tgetstr("GE", &bb);
  1094. X    captrans[cap_index("rmacs", 5)] = "rmacs:GE";
  1095. X    reset_1string = (char *) 0;
  1096. X    reset_3string = (char *) 0;
  1097. X    init_1string = (char *) 0;
  1098. X    init_3string = (char *) 0;
  1099. X    enter_key("CL", key_char_left = tgetstr("CL", &bb));
  1100. X    enter_key("CW", key_change_window = tgetstr("CW", &bb));
  1101. X    enter_key("EN", key_send = tgetstr("EN", &bb));
  1102. X    enter_key("HM", key_Home = tgetstr("HM", &bb));
  1103. X    enter_key("LD", key_line_delete = tgetstr("LD", &bb));
  1104. X    enter_key("LF", key_linefeed = tgetstr("LF", &bb));
  1105. X    enter_key("NU", key_next_unlocked_cell = tgetstr("NU", &bb));
  1106. X    enter_key("PN", key_start_print = tgetstr("PN", &bb));
  1107. X    enter_key("PD", key_page_down = tgetstr("PD", &bb));
  1108. X    enter_key("PU", key_page_up = tgetstr("PU", &bb));
  1109. X    enter_key("PS", key_stop_print = tgetstr("PS", &bb));
  1110. X    enter_key("RC", key_recalc = tgetstr("RC", &bb));
  1111. X    enter_key("RF", key_toggle_ref = tgetstr("RF", &bb));
  1112. X    enter_key("RT", key_return = tgetstr("RT", &bb));
  1113. X    enter_key("UP", key_up_arrow = tgetstr("UP", &bb));
  1114. X    enter_key("WL", key_word_left = tgetstr("WL", &bb));
  1115. X    enter_key("WR", key_word_right = tgetstr("WR", &bb));
  1116. X#endif
  1117. X}
  1118. X#endif
  1119. X#ifndef SVR3
  1120. X#ifndef SVR3_2
  1121. Xchar *strnames[] = {
  1122. X    "cbt", "bel", "cr", "csr", "tbc", "clear", "el", "ed", "hpa",
  1123. X    "cmdch", "cup", "cud1", "home", "civis", "cub1", "mrcup",
  1124. X    "cnorm", "cuf1", "ll", "cuu1", "cvvis", "dch1", "dl1", "dsl",
  1125. X    "hd", "smacs", "blink", "bold", "smcup", "smdc", "dim", "smir",
  1126. X    "invis", "prot", "rev", "smso", "smul", "ech", "rmacs", "sgr0",
  1127. X    "rmcup", "rmdc", "rmir", "rmso", "rmul", "flash", "ff", "fsl",
  1128. X    "is1", "is2", "is3", "if", "ich1", "il1", "ip", "kbs", "ktbc",
  1129. X    "kclr", "kctab", "kdch1", "kdl1", "kcud1", "krmir", "kel",
  1130. X    "ked", "kf0", "kf1", "kf10", "kf2", "kf3", "kf4", "kf5", "kf6",
  1131. X    "kf7", "kf8", "kf9", "khome", "kich1", "kil1", "kcub1", "kll",
  1132. X    "knp", "kpp", "kcuf1", "kind", "kri", "khts", "kcuu1", "rmkx",
  1133. X    "smkx", "lf0", "lf1", "lf10", "lf2", "lf3", "lf4", "lf5",
  1134. X    "lf6", "lf7", "lf8", "lf9", "rmm", "smm", "nel", "pad", "dch",
  1135. X    "dl", "cud", "ich", "indn", "il", "cub", "cuf", "rin", "cuu",
  1136. X    "pfkey", "pfloc", "pfx", "mc0", "mc4", "mc5", "rep", "rs1",
  1137. X    "rs2", "rs3", "rf", "rc", "vpa", "sc", "ind", "ri", "sgr",
  1138. X    "hts", "wind", 0};
  1139. X#endif
  1140. X#endif
  1141. END_OF_FILE
  1142. if test 35222 -ne `wc -c <'getcaps.c'`; then
  1143.     echo shar: \"'getcaps.c'\" unpacked with wrong size!
  1144. fi
  1145. # end of 'getcaps.c'
  1146. fi
  1147. if test -f 'ted.h' -a "${1}" != "-c" ; then 
  1148.   echo shar: Will not clobber existing file \"'ted.h'\"
  1149. else
  1150. echo shar: Extracting \"'ted.h'\" \(5515 characters\)
  1151. sed "s/^X//" >'ted.h' <<'END_OF_FILE'
  1152. X/*
  1153. X** This software is Copyright (c) 1991 by Daniel Weaver.
  1154. X**
  1155. X** Permission is hereby granted to copy, distribute or otherwise
  1156. X** use any part of this package as long as you do not try to make
  1157. X** money from it or pretend that you wrote it.  This copyright
  1158. X** notice must be maintained in any copy made.
  1159. X**
  1160. X** Use of this software constitutes acceptance for use in an AS IS
  1161. X** condition. There are NO warranties with regard to this software.
  1162. X** In no event shall the author be liable for any damages whatsoever
  1163. X** arising out of or in connection with the use or performance of this
  1164. X** software.  Any use of this software is at the user's own risk.
  1165. X**
  1166. X**  If you make modifications to this software that you feel
  1167. X**  increases it usefulness for the rest of the community, please
  1168. X**  email the changes, enhancements, bug fixes as well as any and
  1169. X**  all ideas to me. This software is going to be maintained and
  1170. X**  enhanced as deemed necessary by the community.
  1171. X*/
  1172. X/* terminfo test program include file */
  1173. X
  1174. X#ifdef SVR3_2
  1175. X#ifndef SVR3
  1176. X#define SVR3
  1177. X#endif
  1178. X#endif
  1179. X
  1180. X
  1181. X#ifdef TESTCAP
  1182. X#define LEFT_BRACE '['
  1183. X#define RIGHT_BRACE ']'
  1184. X
  1185. X#include "bsd.h"
  1186. Xextern char *captrans[];
  1187. X
  1188. X#ifdef LIBTC
  1189. X#define tgetent tcgetent
  1190. X#define tgetnum tcgetnum
  1191. X#define tgetflag tcgetflag
  1192. X#define tgetstr tcgetstr
  1193. X#define SETUP readcaps();
  1194. X#else
  1195. X
  1196. X#define SETUP setterm(getenv("TERM")); readcaps();\
  1197. X    if (LINES > 0) lines = LINES; if (COLS > 0) columns = COLS
  1198. X#endif
  1199. X
  1200. X#define tcup(cap, c, r) tgoto(cap, r, c)
  1201. Xextern char *tgoto();
  1202. X
  1203. X#else
  1204. X
  1205. X#include "term.h"
  1206. X
  1207. X#define SETUP setupterm((char *)0, 1, (int *)0)
  1208. X#define tcup tparm
  1209. X
  1210. X#ifdef SVR3
  1211. X#define MAX_STRINGS sizeof(struct _str_struct) / sizeof(char *)
  1212. X#else
  1213. X#define MAX_STRINGS (sizeof(struct strs) + sizeof(struct strs2)) / sizeof(char *)
  1214. Xextern char *strnames[];
  1215. X#endif
  1216. X#endif
  1217. X
  1218. X#define putp(cap) tputs(cap, 1, putch)
  1219. X
  1220. X/* Backword compatibility for System V Release 2 */
  1221. X
  1222. X#ifndef SVR3
  1223. X
  1224. X/* Booleans */
  1225. X#define no_pad_char 0
  1226. X#define needs_xon_xoff 0
  1227. X
  1228. X/* Strings */
  1229. X#define enter_xon_mode (char *)0
  1230. X#define exit_xon_mode (char *)0
  1231. X#define char_padding (char *)0
  1232. X
  1233. X#endif
  1234. X
  1235. Xextern char *tparm();
  1236. Xextern void putch();
  1237. Xextern void putchp();
  1238. Xextern void put_cr();
  1239. Xextern void put_crlf();
  1240. Xextern void put_clear();
  1241. Xextern void put_dec();
  1242. Xextern void put_str();
  1243. Xextern void put_lf();
  1244. Xextern void put_ind();
  1245. Xextern void put_newlines();
  1246. Xextern void put_columns();
  1247. Xextern void put_this();
  1248. Xextern void putln();
  1249. Xextern void ptext();
  1250. Xextern void ptextln();
  1251. Xextern void home_down();
  1252. Xextern void go_home();
  1253. Xextern void three_digit();
  1254. Xextern int getchp();
  1255. Xextern int enter_cap();
  1256. Xextern char *expand();
  1257. Xextern char *expand_to();
  1258. Xextern char *expand_command();
  1259. Xextern char *hex_expand_to();
  1260. Xextern char *print_expand();
  1261. Xextern char *liberated();
  1262. Xextern void can_test();
  1263. Xextern void verify_time();
  1264. Xextern void set_attr();
  1265. X
  1266. Xextern FILE *debug_fp;
  1267. Xextern int debug_char_count, debug_level;
  1268. Xextern char temp[];
  1269. Xextern char tty_shortname[];
  1270. X
  1271. Xextern int test_count, ACK_char, junk_chars, tty_can_sync;
  1272. X#define TTY_ACK_SIZE 64
  1273. Xextern char tty_ENQ[], tty_ACK[];
  1274. Xextern char *current_test, done_test[128];
  1275. Xextern long start_time, end_time;
  1276. Xextern int milli_pad, milli_reps;
  1277. Xextern int pad_sent;
  1278. Xextern int skip_next, rerun;
  1279. X
  1280. X#define CAP_MAX 64
  1281. X
  1282. Xstruct cap_tab {
  1283. X   char *name;
  1284. X   char *value;
  1285. X   int cur_star, cur_plain;
  1286. X   int new_star, new_plain;
  1287. X};
  1288. X
  1289. Xextern int capper, write_ted_file;
  1290. Xextern struct cap_tab cap_list[CAP_MAX];
  1291. X
  1292. X/* pad edit array, used by pad() and kotex() */
  1293. X#define EDIT_MAX 4
  1294. Xextern char *ced_name[EDIT_MAX];
  1295. Xextern char **ced_value[EDIT_MAX];
  1296. X
  1297. X/* definitions for test_pad() */
  1298. X#define NEXT_LETTER letter = letters[letter_number =\
  1299. X    letters[letter_number + 1] ? letter_number + 1 : 0]
  1300. X
  1301. Xextern char letter;
  1302. Xextern int letter_number;
  1303. Xextern int cap_tested, stop_testing, resume_testing;
  1304. Xextern int rated_lines;
  1305. Xextern int augment, reps, ops;
  1306. Xextern long char_sent, char_max, full_test;
  1307. Xextern char *cap_select;
  1308. X
  1309. X#define CLEAR_TEST_MAX 5
  1310. Xextern int clear_select;
  1311. Xextern int clr_test_value[CLEAR_TEST_MAX];
  1312. Xextern int clr_test_reps[CLEAR_TEST_MAX];
  1313. X
  1314. Xextern int replace_mode;
  1315. Xextern int char_count, line_count, expand_chars;
  1316. Xextern int can_go_home, can_clear_screen;
  1317. X
  1318. Xextern int translate_mode, scan_mode;
  1319. Xextern int building_cap_list, time_pad;
  1320. Xextern int test_length, char_mask;
  1321. X
  1322. X/* Parity bit macros */
  1323. X#define STRIP_PARITY 0x7f
  1324. X#define ALLOW_PARITY 0xff
  1325. X
  1326. X/* select_delay_type:    0 -> reset all delays
  1327. X            1 -> force long delays
  1328. X            2 -> do not change the delays */
  1329. Xextern int select_delay_type;
  1330. X
  1331. X/* select_xon_xoff:    0 -> reset xon/xoff
  1332. X            1 -> set xon/xoff
  1333. X            2 -> do not change xon/xoff */
  1334. Xextern int select_pads, select_xon_xoff;
  1335. X
  1336. Xextern int tty_abort;
  1337. Xextern int tty_frame_size;
  1338. Xextern unsigned long tty_baud_rate;
  1339. Xextern int not_a_tty, nodelay_read;
  1340. X
  1341. X/* definitions for stty_query() */
  1342. X#define TTY_NOECHO 1
  1343. X#define TTY_OUT_TRANS 2
  1344. X#define TTY_CHAR_MODE 0
  1345. Xextern int stty_query();
  1346. X
  1347. X/* ASCII control characters */
  1348. X#define A_DC1 0x11  /* Control Q */
  1349. X#define A_DC3 0x13  /* Control S */
  1350. X#define A_ESC 0x1b
  1351. X#define A_DCS 0x90
  1352. X#define A_CSI 0x9b
  1353. X#define A_ST  0x9c
  1354. X
  1355. X/* scan code definitions */
  1356. X#define MAX_SCAN 256
  1357. X
  1358. X#ifndef MAIN
  1359. X/* translate mode default strings */
  1360. Xextern char *TM_carriage_return;
  1361. Xextern char *TM_cursor_down;
  1362. Xextern char *TM_scroll_forward;
  1363. Xextern char *TM_newline;
  1364. Xextern char *TM_cursor_left;
  1365. Xextern char *TM_bell;
  1366. Xextern char *TM_form_feed;
  1367. Xextern char *TM_tab;
  1368. X#endif
  1369. X
  1370. X/* attribute structure definition */
  1371. Xstruct mode_list {
  1372. X   char *name;
  1373. X   char *begin_mode, *end_mode;
  1374. X   int number;
  1375. X};
  1376. END_OF_FILE
  1377. if test 5515 -ne `wc -c <'ted.h'`; then
  1378.     echo shar: \"'ted.h'\" unpacked with wrong size!
  1379. fi
  1380. # end of 'ted.h'
  1381. fi
  1382. echo shar: End of archive 4 \(of 7\).
  1383. cp /dev/null ark4isdone
  1384. MISSING=""
  1385. for I in 1 2 3 4 5 6 7 ; do
  1386.     if test ! -f ark${I}isdone ; then
  1387.     MISSING="${MISSING} ${I}"
  1388.     fi
  1389. done
  1390. if test "${MISSING}" = "" ; then
  1391.     echo You have unpacked all 7 archives.
  1392.     rm -f ark[1-9]isdone
  1393. else
  1394.     echo You still need to unpack the following archives:
  1395.     echo "        " ${MISSING}
  1396. fi
  1397. ##  End of shell archive.
  1398. exit 0
  1399.  
  1400. exit 0 # Just in case...
  1401. -- 
  1402. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1403. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1404. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1405. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1406.